home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Destination: Castle
/
Destination: Castle.iso
/
setup.ms_
/
setup.ms
Wrap
Text File
|
1994-10-26
|
7KB
|
286 lines
'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'
''DIALOG ID's
CONST WELCOME = 100
CONST ASKQUIT = 200
CONST DESTPATH = 300
CONST EXITFAILURE = 400
CONST EXITQUIT = 600
CONST EXITSUCCESS = 700
CONST VERIFYWINPATH = 2400
CONST ERROR_UNEXPECTED = 2200
CONST NOT_INSTALLED = 3100
''OTHER CONSTANTS
CONST LOGO = 1
CONST MB_YESNO = 4
CONST MB_ICONINFORMATION = 64
CONST IDYES = 6
CONST IDNO = 7
GLOBAL THEMENAME$
GLOBAL THEMEDIR$
THEMENAME$ = "Castle"
THEMEDIR$ = "CASTLE"
GLOBAL DESTWIN$ ''Windows directory
GLOBAL DESTWINSYS$ ''Windows\System directory
GLOBAL DESTDINER$ ''Diner directory
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
INIT:
CUIDLL$ = "MSCUISTF.DLL"
ExitCode% = 0
ON ERROR GOTO ERRORTRAP
SrcDir$ = GetSymbolValue ("STF_SRCDIR")
DESTWIN$ = GetWindowsDir()
SetBitmap CUIDLL$, LOGO
SetTitle "Imagination Express Setup"
szInf$ = GetSymbolValue ("STF_SRCINFPATH")
IF szInf$ = "" THEN
szInf$ = GetSymbolValue ("STF_CWDDIR") + "setup.inf"
ENDIF
ReadInfFile szInf$
WELCOME:
sz$ = UIStartDlg (CUIDLL$, WELCOME, "FInfoDlgProc", 0, "")
IF sz$ <> "CONTINUE" THEN
GOSUB ASKQUIT
GOTO WELCOME
ENDIF
UIPop 1 '' destroy dialog on top of stack
IF ExitCode% <> 0 THEN
GOTO EXITFAIL
ENDIF
VERIFYWINPATH:
'' Verify that setup has found the correct \windows directory
DESTWIN$ = GetWindowsDir()
SetSymbolValue "EditTextIn", DESTWIN$
SetSymbolValue "EditFocus", "END"
sz$ = UIStartDlg (CUIDLL$, VERIFYWINPATH, "FEditDlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO VERIFYWINPATH
ELSEIF SZ$ = "EXIT" THEN
GOSUB ASKQUIT
GOTO VERIFYWINPATH
ENDIF
sz$ = GetSymbolValue ("EditTextOut")
IF sz$ <> DESTWIN$ THEN
'' make sure user ended path with a '\'
'' if not, help 'em out
DESTWIN$ = sz$
DESTWIN$ = LTRIM$(RTRIM$ (DESTWIN$))
IF INSTR (LEN (DESTWIN$) - 1, DESTWIN$, "\") = 0 THEN
DESTWIN$ = DESTWIN$ + "\"
ENDIF
'' make sure path has a drive letter and drive letter is valid
sz$ = MID$ (DESTWIN$, 2, 1)
IF sz$ <> ":" THEN
i% = DoMsgBox ("You must specify a valid drive letter in the path name.", "Imagination Express Setup", MB_ICONHAND + MB_OK)
GOTO VERIFYWINPATH
ENDIF
sz$ = MID$ (DESTWIN$, 1, 1)
IF IsDriveValid (sz$) = 0 THEN
i% = DoMsgBox ("You must specify a valid drive letter in the path name.", "Imagination Express Setup", MB_ICONHAND + MB_OK)
GOTO VERIFYWINPATH
ENDIF
'' make sure path is valid (i.e. it exists)
IF DoesDirExist (DESTWIN$) = 0 THEN
i% = DoMsgBox (DESTWIN$ + " is not a valid path name.", "Imagination Express Setup", MB_ICONHAND + MB_OK)
GOTO VERIFYWINPATH
ENDIF
ENDIF
UIPop 1
DESTWINSYS$ = DESTWIN$
IF INSTR (LEN (DESTWINSYS$) - 1, DESTWINSYS$, "\") = 0 THEN
DESTWINSYS$ = DESTWINSYS$ + "\"
ENDIF
DESTWINSYS$ = DESTWINSYS$ + "SYSTEM"
GETDINERPATH:
INISTR$ = DESTWIN$ + "IMAGINE.INI"
IF DoesFileExist (INISTR$, femExists) = 1 THEN
DESTDINER$ = GetIniKeyString (INISTR$, "General", "Root")
IF DESTDINER$ = "" THEN
GOTO ERROR_NOT_INSTALLED
ENDIF
EXESTR$ = MakePath (DESTDINER$, "IMAGINE.EXE")
IF DoesFileExist (EXESTR$, femExists) = 0 THEN
GOTO ERROR_NOT_INSTALLED
ENDIF
ELSE
GOTO ERROR_NOT_INSTALLED
ENDIF
INITCOPYLIST:
ClearCopyList
AddSectionFilesToCopyList THEMENAME$, SrcDir$, MAKEPATH (DESTDINER$, "THEMES\" + THEMEDIR$ + "\")
sizereq& = GetCopyListCost ("", "NeededSpace", "")
CHECKSPACE:
IF sizereq& <> 0 THEN
DRIVELETTER$ = MID$ (DESTDINER$, 1, 1)
COST$ = GetListItem ("NeededSpace", ASC(LCASE$ (DESTDINER$)) - ASC("a") + 1)
MESSAGE$ = "Not enough free space on drive " + DRIVELETTER$ + ":. Setup needs " + COST$
MESSAGE$ = " bytes free to install the " + THEMENAME$ + " Theme Pack. Please free up some space and run Setup again."
i% = DoMsgBox (MESSAGE$, "Imagination Express Setup", MB_ICONHAND + MB_OK)
GOTO SEEYA
ENDIF
COPYFILES:
SrcDir$ = GetSymbolValue ("STF_SRCDIR")
CreateDir MakePath (DESTDINER$, "Themes\" + THEMEDIR$ + "\"), cmoVital
ERR = 0
'' copy the files
CopyFilesInCopyList
CreateIniKeyValue MakePath (DESTWIN$, "Imagine.INI"), "Themepack List", THEMENAME$, "Themes\" + THEMEDIR$ + "\", cmoOverwrite
'' check for copy errors
IF ERR <> 0 THEN
GOTO ERR_UNEXPECTED
ENDIF
SUCCESS:
'' indicate success to the user and restart windows if necessary
sz$ = UIStartDlg (CUIDLL$, EXITSUCCESS, "FInfoDlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO SUCCESS
ENDIF
UIPop 1
GOTO SEEYA
ASKQUIT:
sz$ = UIStartDlg (CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
IF sz$ = "EXIT" THEN
UIPop 1
GOTO QUIT
ELSEIF sz$ = "REACTIVATE" THEN
GOTO ASKQUIT
ELSE
UIPop 1 '' remove quit dialog and go back to previous dialog
ENDIF
RETURN
QUIT:
sz$= UIStartDlg (CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO QUIT
ENDIF
UIPopALL
GOTO SEEYA
ERR_UNEXPECTED:
sz$ = UIStartDlg (CUIDLL$, ERROR_UNEXPECTED, "FInfoDlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO ERR_UNEXPECTED
ENDIF
UIPop 1
GOTO FAILURE
EXITFAIL:
sz$ = UIStartDlg (CUIDLL$, ExitCode%, "FInfoDlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO EXITFAIL
ENDIF
UIPop 1
GOTO FAILURE
FAILURE:
sz$ = UIStartDlg (CUIDLL$, EXITFAILURE, "FInfoDlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO FAILURE
ENDIF
UIPopAll
GOTO SEEYA
ERRORTRAP:
IF ERR = STFQUIT THEN
GOTO QUIT
ENDIF
RESUME NEXT
ERROR_NOT_INSTALLED:
sz$ = UIStartDlg (CUIDLL$, NOT_INSTALLED, "FInfoDlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO ERROR_NOT_INSTALLED
ENDIF
UIPopAll
GOTO SEEYA
SEEYA:
UIPopAll
END
'' FROM HERE ON ARE FUNCTIONS IN THE ORIGINAL WING.MST FILE THAT THE WING SETUP USES
'**
'** Purpose:
'** Appends a file name to the end of a directory path,
'** inserting a backslash character as needed.
'** Arguments:
'** szDir$ - full directory path (with optional ending "\")
'** szFile$ - filename to append to directory
'** Returns:
'** Resulting fully qualified path name.
'*************************************************************************
FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
IF szDir$ = "" THEN
MakePath = szFile$
ELSEIF szFile$ = "" THEN
MakePath = szDir$
ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
MakePath = szDir$ + szFile$
ELSE
MakePath = szDir$ + "\" + szFile$
END IF
END FUNCTION